import axios from 'axios'
import urlConfig from './baseURL'
import router from '../router'
import { Message } from 'element-ui'

// 请求超时时间
axios.defaults.timeout = 30000

// 全局设置baseUrl
axios.defaults.baseURL = urlConfig.baseURL

// 每次请求都为http头增加Authorization字段，其内容为Token
axios.interceptors.request.use(
    config => {
        // 如果token存在并且不是登录或忘记密码页面就设置请求头
        if (localStorage.token && !/login|forget/i.test(router.currentRoute.path)) {
            config.headers.Authorization = localStorage.token
        }

        return config
    }
)

// http响应拦截器
axios.interceptors.response.use(
    res => res.data,
    err => {
        try {
            // 如果返回401表示当前用户未登录否则登录超时
            if (err.response.status === 401) {
                localStorage.clear()

                Message({
                    message: 'Please login again!',
                    onClose: () => router.push('/login')
                })
            }
        } catch(err) {
            Message.error('request timeout!')
        }
    }
)

export default axios